HA定时自动备份到百度网盘、阿里网盘(手把手教程) 您所在的位置:网站首页 百度云 硬盘备份 HA定时自动备份到百度网盘、阿里网盘(手把手教程)

HA定时自动备份到百度网盘、阿里网盘(手把手教程)

2023-07-18 10:16| 来源: 网络整理| 查看: 265

本帖最后由 muxiachuixue 于 2023-7-13 23:38 编辑 2022/5/9 更新:修复了部分情况无法删除旧备份的bug,请重新下载v1.2.6版本的脚本 ha_atuo_backup.sh 2021/12/30 更新:百度网盘bypy已不需要科学即可完成授权,备份log提示百度网盘备份失败的,请执行pip install -U bypy 升级最新版bypy工具,再执行bypy info 重新授权2022/01/10 更新:百度网盘和阿里网盘如有一方备份失败,不会影响另外一方的备份,请重新下载v1.2.5版本的脚本 ha_atuo_backup.sh 一、前言 辛苦折腾大半年的HA,因内存卡/硬盘坏掉,所有配置全部丢失?不留云端备份是很冒险的做法,所以定期云端自动备份,显得尤为重要。 论坛此前已有大神发过相关帖子,本人写了一个一键的shell脚本,可同时支持百度网盘、阿里网盘,脚本依赖于百度网盘工具 bypy 和阿里网盘工具 aliyunpan-cli,感谢原作者。 脚本支持所有版本的homeassistant(Hassos/Supervised or Hassio/Core/Container);Core/Container版本备份的是/config (宿主机中的homeassistant)文件夹 如需备份到NAS,请参考Samba Backup、Remote Backup (uses scp)

脚本可实现/支持的功能: 1. 定时自动备份HA,支持设置备份密码 2. 可设置保留的备份个数,自动清理最早的多余备份 3. 支持备份到百度网盘、阿里网盘,可自由选择 4. 自动修改备份后的文件名,以“时间+版本号”命名,更方便管理 5. 本地备份后,自动同步到网盘,只确保本地备份上传到网盘,不会删除本地和网盘中不同文件名的文件 6. 如果上一次上传到网盘失败(如只上传了一半),下次同步时会继续上传,直到网盘和本地备份文件Hash值完全一致,这样可以确保每个云端备份都有效

二、安装百度网盘工具 1. 安装bypy 宿主机上执行以下命令(不要在docker里面执行)

pip3 install bypy 宿主机上执行以下命令 bypy info 会返回一个链接,复制到浏览器打开,得到一个授权码,按terminal中的提示填入,等待授权成功 测试是否安装好,宿主机上执行 bypy info 若返回网盘的空间信息,则表示安装成功

3. bypy添加到环境变量 我出现过几次系统提示找不到bypy命令的情况,为防止备份失败,最好把bypy路径加入环境变量 宿主机执行

which bypy 把返回的路径添加到宿主机上/etc/profile文件,比如我的是: # PATH for baidu yunpan export PATH=$PATH:/home/pi/.local/bin 上面/home/pi/.local/bin是我的路径地址,如果你的不是这个,记得修改 保存后再执行 source /etc/profile 三、安装阿里网盘工具

没阿里网盘的可注册一个,目前上传下载不限速:注册地址

1. 安装 宿主机执行

pip3 install aliyunpan 2. 配置与登录 查看命令位置: which aliyunpan-cli 假设返回:/home/pi/.local/bin/aliyunpan-cli 将路径加入系统环境变量: sudo nano /etc/profile 加入如下代码 # PATH for aliyunpan-cli export PATH=$PATH:/home/pi/.local/bin 其中/home/pi/.local/bin是我的路径,如果你的不是,请修改

根据github项目地址中的教程,登录自己的阿里云网盘账号并获取到refresh token,回到宿主机终端,输入:

echo "refresh_token: 'xxxxx'" > ~/.config/aliyunpan.yaml 其中xxxxx是你的refresh token,注意单引号和双引号,不要弄错

再在宿主机终端中输入

aliyunpan-cli tree 如果返回的信息中包含root,则表示登录成功

3. 自动刷新token 宿主机执行:

crontab -e 添加如下代码 # aliyunpan refresh token update */50 * * * * output=$(/home/pi/.local/bin/aliyunpan-cli token -r) && [ ${#output} -eq 32 ] && echo "refresh_token: '$output'" > ~/.config/aliyunpan.yaml 表示每50分钟刷新一次refresh_token,并将新的refresh_token保存到~/.config/aliyunpan.yaml文件。其中 /home/pi/.local/bin/是aliyunpan-cli命令的路径,可用which aliyunpan-cli 查看,如果你的不是此路径,请修改 记住,一定要带上命令的路径,否则无法运行成功 四、配置自动备份脚本 1. 修改自定义配置 下载脚本文件ha_atuo_backup.sh,把文件放入到宿主机任意位置,比如/home/pi 目录 (20220509更新v1.2.6:修复了部分情况无法删除旧备份的bug) (20220110更新v1.2.5:百度网盘如备份失败,不再影响阿里网盘的备份) (20211105更新v1.2.4:自动生成的备份文件名包含了HA的版本号) (20211029更新v1.2.3:阿里网盘同步后不会覆盖云端文件修改时间,要配合最新版aliyunpan-cli使用:pip3 install aliyunpan --upgrade) (20211028更新v1.2.2:百度网盘支持自定义远程备份路径,修复了一些其他小问题) (20211027更新v1.2.1:修复了百度网盘上传日志文件报错的bug) (20211026更新v1.2.0:修复了crontab 定时任务找不到网盘命令的bug) ha_auto_backup_v1.2.6.rar (3.14 KB, 下载次数: 132) 2022-5-9 15:59 上传 点击文件名下载附件 自动备份脚本        打开脚本,自定义设置: cd /home/pi sudo nano ha_atuo_backup.sh 自定义配置 登录/注册后可看大图

自定义.png (233.51 KB, 下载次数: 1)

下载附件

自定义配置

2021-10-28 11:16 上传

ha_path:检查 HA主目录 ha_path 文件夹路径是不是/usr/share/hassio/homeassistant,如果不是,修改成自己的(core/container版本用户必改)可在宿主机上执行如下命令查看HA主目录:

sudo find / -name .HA_VERSION 2>/dev/null | grep -o '/.*/' new_backup:是否创建新备份,默认为"yes",如果改为"no"则不会在本地创建新的备份 backup_password:备份密码如果是默认值no_password,则无备份密码;可自行修改备份密码 number_of_files_to_keep_local:默认保留5个最新备份,删除多余的较早备份,可自定义修改保留备份数 upload_baiduyun:是否上传到百度网盘,默认为"yes",如果改为"no"则不会将备份上传到百度网盘 upload_aliyun:是否上传到阿里网盘,默认为"yes",如果改为"no"则不会将备份上传到阿里网盘 baiduyun_backup_remote_path:百度网盘远程备份路径,默认为/homeassistant_backup,可去掉此行注释进行修改 aliyun_backup_remote_path:阿里网盘远程备份路径,默认为/homeassistant_backup,可去掉此行注释进行修改

2. 手动运行验证 手动运行一下脚本,看看有无报错(如果backup文件夹中已有备份,且超过5个,会自动删除多余的备份,请务必修改保留的备份数后再执行脚本)

sh ha_auto_backup.sh 日志文件可在backup文件夹下查看:auto_backup.log

3. 检查是否备份成功 HA页面,supervisor-备份(只有Hassio/Hassos版本用户才能看到): 备份 登录/注册后可看大图

HA备份.png (107.55 KB, 下载次数: 0)

下载附件

备份

2021-10-28 11:25 上传

百度网盘-我的应用数据(apps)-bypy文件夹: 百度网盘 登录/注册后可看大图

百度.png (142.05 KB, 下载次数: 0)

下载附件

百度网盘

2021-10-28 11:25 上传

阿里网盘-/homeassistant_backup/backup 阿里网盘 登录/注册后可看大图

阿里.png (205.1 KB, 下载次数: 0)

下载附件

阿里网盘

2021-10-28 11:25 上传

五、设置定时备份: 可利用crontab任务设置自动定时备份,宿主机执行

crontab -e 添加如下代码可实现每天凌晨2点自动备份(建议将备份时间设置为凌晨,不占用网速) # HA auto backup 0 2 * * * bash -lc 'sh /home/pi/ha_auto_backup.sh' 其中/home/pi/ha_auto_backup.sh 路径请自行修改成你自己的。注意bash -lc 不能少,否则可能找不到命令路径;其他定时任务自行百度

完,任何问题可以留言~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有